<!DOCTYPE HTML>
<html>
<head>
<title>EnvSub | AutoHotkey</title>
<meta name="description" content="The EnvSub command sets a variable to itself minus the given value (can also compare date-time values)." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>EnvSub</h1>

<p>设置<a href="../Variables.htm">变量</a>的值为它自身减去给定的值(还可以比较<a href="FileSetTime.htm#YYYYMMDD">日期-时间</a>值). 同义于: <code>Var -= Value</code>.</p>

<pre class="Syntax">
<span class="func">EnvSub</span>, Var, Value <span class="optional">, TimeUnits</span>
Var -= Value <span class="optional">, TimeUnits</span>
Var--
</pre>
<h2>参数</h2>
<dl>

  <dt>Var</dt>
  <dd><p>要运算的<a href="../Variables.htm">变量</a>名.</p></dd>

  <dt>Value</dt>
  <dd><p>任何整数, 浮点数或 <a href="../Variables.htm#Expressions">表达式</a>(使用了 <em>TimeUnits</em> 时不支持表达式).</p></dd>

  <dt>TimeUnits</dt>
  <dd><p>如果使用此参数, 那么此参数指示命令如何从 <em>Var</em> 中减去 <em>Value</em>: 把它们都视为 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式的日期时间戳. <em>TimeUnits</em> 可以为 Seconds, Minutes, Hours 或 Days(或仅使用这些单词的首个字母). 如果 <em>Value</em> 为空, 则使用当前时间代替. 同样地, 如果 <em>Var</em> 是空变量, 则使用当前时间代替.</p>
      <p>结果总是被 <em>向下</em> 取整到最近的整数. 例如, 如果两个时间戳之间的实际差为 1.999 天, 那么运算的结果将为 1 天. 如果需要更高的精度, 请在 <em>TimeUnits</em> 中使用 Seconds 并把结果除以 60.0, 3600.0 或 86400.0(以得到更精确的分钟数, 小时数或天数).</p>
      <p>如果 <em>Var</em> 或 <em>Value</em> 其中一个为无效的时间戳或包含早于 1601 的年份, 则 <em>Var</em> 会被置空来表示此问题.</p>
      <p>内置变量 <strong>A_Now</strong> 包含了 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a> 格式的当前本地时间.</p>
      <p>要精确地测出两个事件之间所经过的时间, 请使用 <a href="../Variables.htm#TickCount">A_TickCount method</a>, 因为它提供了毫秒级的精度.</p>
      <p>要从一个时间戳中加上或减去一定的秒数, 分钟数, 小时数或天数, 请使用 <a href="EnvAdd.htm">EnvAdd</a>(减法通过加上负数来实现).<br>
      </p></dd>

</dl>

<h2>备注</h2>
<p>此命令等同于这种简写形式: <code>Var -= Value</code>.</p>
<p>通过使用 <code>Var++</code>, <code>Var--</code>, <code>++Var</code> 或 <code>--Var</code> 可以让变量增加或减去 1.</p>
<p>如果 <em>Var</em> 或 <em>Value</em> 其中一个为空或不以数字开头, 那么在计算中它会被视为 0(不过用在表达式 <em>内部</em> 或使用了 <em>TimeUnits</em> 参数时例外).</p>
<p>如果 <em>Var</em> 或 <em>Value</em> 都为小数, 那么最后的结果将为浮点数, 而格式由 <a href="SetFormat.htm">SetFormat</a> 决定.</p>
<h2>相关</h2>
<p><a href="EnvAdd.htm">EnvAdd</a>, <a href="EnvMult.htm">EnvMult</a>, <a href="EnvDiv.htm">EnvDiv</a>, <a href="SetFormat.htm">SetFormat</a>, <a href="../Variables.htm#Expressions">表达式</a>, <a href="IfIs.htm">If var is [not] type</a>, <a href="SetEnv.htm">SetEnv</a>, <a href="FileGetTime.htm">FileGetTime</a></p>
<h2>示例</h2>
<pre class="NoIndent">EnvSub, MyCount, 2
MyCount -= 2  <em>; 等同于上面的命令</em>

var1 = 20050126
var2 = 20040126
EnvSub, var1, %var2%, days
MsgBox, %var1%  <em>; 结果将是 366, 因为 2004 是个闰年.</em></pre>

</body>
</html>